package com.weareint.feigncopy;

import java.lang.annotation.*;

/**
 *
 *
 * <pre>
 * Feign映射注解
 * copyField ： 需要去Feign返回的对象里 copy 的属性默认 和 注解所在的属性 一致
 * relationId : 通过原始数据的 哪个属性 去关联 Feign返回的对象的属性 如：  productId -》 id
 * beRelationId : Feign返回的对象被关联的属性 如 Product 的 id, productId -》 id
 * beRelationClass : 需要从哪个 Feign返回的对象 去查询
 * </pre>
 *
 * @author johnny
 * @date 2021-07-23 6:02 下午
 */
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FeignMapping {

    /**
     * copy 的 属性
     *
     * @return : ""
     */
    String copyField() default "";
    /**
     * 关联Id
     *
     * @return :关联的Id
     */
    String relationId();

    /**
     * 被关联的Id
     *
     * @return : id
     */
    String beRelationId() default "id";

    /**
     * 生效在 哪个 class 中
     *
     * @return class
     */
    Class<?> beRelationClass();

    /**
     * 关联id类型
     *
     * @return
     */
    Class<?> relationIdType() default Long.class;

    /**
     * 被关联id类型
     *
     * @return
     */
    Class<?> beRelationIdType() default Long.class;

    /**
     * 是否继承
     *
     * @return
     */
    boolean beRelationIdIsSuper() default false;
}
